GtkTreeIter *iter,
gpointer data);
-typedef enum {
- REFRESH_UP_TO_CURSOR_POSITION,
- REFRESH_WHOLE_TEXT
-} RefreshMode;
-
static RefreshStatus refresh_current_folder_and_file_part (GtkFileChooserEntry *chooser_entry,
- RefreshMode refresh_mode);
+ const char *text);
static void finished_loading_cb (GtkFileSystemModel *model,
GError *error,
GtkFileChooserEntry *chooser_entry);
gint *position)
{
GtkFileChooserEntry *chooser_entry = GTK_FILE_CHOOSER_ENTRY (editable);
+ char *text;
parent_editable_iface->do_insert_text (editable, new_text, new_text_length, position);
return;
remove_completion_feedback (chooser_entry);
- refresh_current_folder_and_file_part (chooser_entry, REFRESH_UP_TO_CURSOR_POSITION);
+ text = gtk_editable_get_chars (editable, 0, *position);
+ refresh_current_folder_and_file_part (chooser_entry, text);
+ g_free (text);
}
static void
{
RefreshStatus status;
gboolean is_error;
- char *feedback_msg;
+ char *feedback_msg, *text;
- status = refresh_current_folder_and_file_part (chooser_entry, REFRESH_UP_TO_CURSOR_POSITION);
+ text = gtk_editable_get_chars (GTK_EDITABLE (chooser_entry),
+ 0, gtk_editable_get_position (GTK_EDITABLE (chooser_entry)));
+ status = refresh_current_folder_and_file_part (chooser_entry, text);
+ g_free (text);
is_error = FALSE;
commit_completion_and_refresh (GtkFileChooserEntry *chooser_entry)
{
/* Here we ignore the result of refresh_current_folder_and_file_part(); there is nothing we can do with it */
- refresh_current_folder_and_file_part (chooser_entry, REFRESH_WHOLE_TEXT);
+ refresh_current_folder_and_file_part (chooser_entry, gtk_entry_get_text (GTK_ENTRY (chooser_entry)));
}
static void
static RefreshStatus
refresh_current_folder_and_file_part (GtkFileChooserEntry *chooser_entry,
- RefreshMode refresh_mode)
+ const gchar * text)
{
- GtkEditable *editable;
- gint end_pos;
- gchar *text;
GFile *folder_file;
gchar *file_part;
gsize total_len, file_part_len;
GError *error;
RefreshStatus result;
- editable = GTK_EDITABLE (chooser_entry);
-
- switch (refresh_mode)
- {
- case REFRESH_UP_TO_CURSOR_POSITION:
- end_pos = gtk_editable_get_position (editable);
- break;
-
- case REFRESH_WHOLE_TEXT:
- end_pos = gtk_entry_get_text_length (GTK_ENTRY (chooser_entry));
- break;
-
- default:
- g_assert_not_reached ();
- return REFRESH_INVALID_INPUT;
- }
-
- text = gtk_editable_get_chars (editable, 0, end_pos);
-
error = NULL;
if (!gtk_file_chooser_entry_parse (chooser_entry,
text, &folder_file, &file_part, &error))
chooser_entry->file_part = file_part;
chooser_entry->file_part_pos = file_part_pos;
- g_free (text);
-
if (result == REFRESH_OK)
{
result = reload_current_folder (chooser_entry, folder_file);